package main

import (
	"encoding/binary"
	"fmt"
)

const (
	HeaderSize = 2
	BodySize   = 4
	PacketSize = HeaderSize + BodySize
)

type Message struct {
	Type uint16
	Data uint32
}

func parseMessage(data []byte) (*Message, error) {
	if len(data) < PacketSize {
		return nil, fmt.Errorf("数据长度不足")
	}

	msg := &Message{}
	msg.Type = binary.BigEndian.Uint16(data[:HeaderSize])
	msg.Data = binary.BigEndian.Uint32(data[HeaderSize:PacketSize])

	return msg, nil
}

func main() {
	// 模拟从网络或文件读取的二进制数据
	data := []byte{0x01, 0x02, 0x00, 0x00, 0x00, 0x0A}

	// 解析二进制数据
	msg, err := parseMessage(data)
	if err != nil {
		fmt.Println("解析失败:", err)
		return
	}

	// 处理解析后的数据
	fmt.Printf("消息类型: %d, 数据: %d\n", msg.Type, msg.Data)
}
